package 管理系统;

import java.util.ArrayList; 
import java.util.Scanner;

public class App {
    public static void main(String[] args) {
        ArrayList<Students> list = new ArrayList<>();
        while (true) {
            //界面输出
            System.out.println("-----欢迎来到学生管理系统-----");
            //选择
            System.out.println("1.添加学生");
            System.out.println("2.删除学生");
            System.out.println("3.修改学生");
            System.out.println("4.查询学生");
            System.out.println("5.退出");
            //用户输入选择
            Scanner sc = new Scanner(System.in);
            System.out.println("请输入你的选择:");
            String choose = sc.next();
            //选择中转
            switch (choose) {
                //添加
                case "1":
                    Add(list);
                    break;
                //删除
                case "2":
                    Delete(list);
                    break;
                //修改
                case "3":
                    Revise(list);
                    break;
                //查询
                case "4":
                    Inquire(list);
                    break;
                case "5"://关闭程序
                    System.out.println("程序退出!");
                    System.exit(0);
                default:
                    System.out.println("选择有误,请重新选择!");
            }
        }
    }

    //查询
    public static void Inquire(ArrayList<Students> list) {
        System.out.println("查询学生");

        //判断有没有学生信息
        if (list.size() == 0) {
            System.out.println("当前没有学生信息,请添加之后再次查询!");
            return;
        }
        //打印表头
        System.out.println("id\t姓名\t\t年龄\t\t家庭住址");
        //遍历学生类
        for (int i = 0; i < list.size(); i++) {
            //获取学生对象
            Students stu = list.get(i);
            //打印学生信息
            System.out.println(stu.getId() + "\t" + stu.getName() + "\t" + stu.getAge() + "\t\t" + stu.getAddress());
        }
    }

    //添加
    public static void Add(ArrayList<Students> list) {
        //System.out.println("添加学生");
        //先创建学生对象,在用户输入的时候在调用进去
        Students stu = new Students();

        //让用户输入
        Scanner sc = new Scanner(System.in);

        //用户输入学生信息
        //输入id
        System.out.println("请输入学生id:");
        String id = sc.next();
        //判断学生id是否存在
        int index=index(list,id);
        if (index>-1) {
            System.out.println("学生信息存在，请重新输入!");
            return;
        }

        stu.setId(id);

        //输入姓名
        System.out.println("请输入学生姓名:");
        String name = sc.next();
        stu.setName(name);

        //输入年龄
        System.out.println("请输入学生年龄:");
        int age = sc.nextInt();
        stu.setAge(age);

        //输入学生家庭住址
        System.out.println("请输入学生家庭住址:");
        String address = sc.next();
        stu.setAddress(address);

        //将输入信息传入Students
        list.add(stu);

        //提示用户添加成功
        System.out.println("学生信息添加完毕!");
    }

    //删除
    public static void Delete(ArrayList<Students> list) {
        //System.out.println("删除学生");

        //获取用户需要删除的id
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入需要删除的学生id:");
        String id=sc.next();
        //以获取索引方式删除学生信息
        int index=index(list,id);
        //判断学生id是否存在
        if (index==-1){
            System.out.println("输入的学生信息不存在");
            return;
        }
        //利用remove(索引)进行删除
        list.remove(index);

        //提升用户删除成功
        System.out.println("学生信息删除成功!");
    }

    //修改
    public static void Revise(ArrayList<Students> list) {
        //System.out.println("修改学生");
        Scanner sc=new Scanner(System.in);
        System.out.println("请输入需要修改的学生id:");
        String id=sc.next();

        int index=index(list,id);

        if(index==-1){
            System.out.println("学生信息不存在,请重新输入!");
            return;
        }
        //进行修改
        //获取要修改的学生对象
        Students stu=list.get(index);
        //新的学生姓名
        System.out.println("请输入新的学生姓名:");
        String newName=sc.next();
        stu.setName(newName);

        //新的学生年龄
        System.out.println("请输入新的学生年龄:");
        int newAge=sc.nextInt();
        stu.setAge(newAge);

        //新的学生家庭住址
        System.out.println("请输入新的学生家庭住址:");
        String newAddress=sc.next();
        stu.setAddress(newAddress);

        //提示信息修改成功
        System.out.println("学生信息修改成功!");

    }

    //利用索引判断用户id是否存在
    public static int index(ArrayList<Students> list,String id) {
        //遍历得到每一个学生对象
        for (int i = 0; i < list.size(); i++) {
            //遍历学生信息的id进行判断
            Students stu=list.get(i);
            //获取学生类里面的id
            String sid=stu.getId();
            //判断
            if(sid.equals(id)){
                //存在则返回索引
                return i;
            }
        }
        //不存在则返回-1
        return -1;
    }

}
